// console.log(111); // 控制台打印
// alert('aaa');  // 页面弹窗打印
// document.write('嗨，欢迎学习前端技术！');  // 当前dom下输出
//  num =  prompt('请输⼊您的姓名:')  // 提示输入框
//  alert(num)
// //  声明：关键字+变量
// // let不允许重复声明
//  let a;
//  console.log(a)  // 只声明不赋值：undefined
//  赋值
//  a = 0;

//  同时声明多个变量（用英文,逗号隔开）
// let aa = 0, bb = 9, c = 8;

//  var b = 0;
//  var b = 1;

//  变量定义，一般遵循小驼峰定义风格
//  var  jj =  0;
// 常量大部分用纯大写
// 常量不允许重新赋值,声明的时候必须赋值（初始化）
//  const NUM = 9999;
//  NUM = 88888;
//  console.log(NUM)

// let qq = 123;

// console.log(typeof(-1.1))  // number
// console.log(typeof(`1`)) // string
// console.log(typeof(true)) // boolean
// console.log(typeof([1,2,3])) // object

// // \:转义符
// console.log("成都\"熊猫\"")

// 用反引号来实现类型的转换
// console.log(`收到了${qq}块钱`)
// console.log('收到了' + qq + '块钱')

// console.log(myFun())

// function myFun() {
//   return null;
// }

// let num = 13 // 数值
// let num2 = '2' // 字符串
// // 隐式转换
// console.log(num + num2) //  132 +: 字符串拼接的效果
// console.log(num - num2) // 11 -:运算符，数字之间的处理
// // 显示转换
// console.log(Number(num2))

// let a222 = prompt('请输⼊⼀个数字')
// let b222 = prompt('请再输⼊⼀个数字')
// alert(a222 + b222);

// let str = 'hello';
// console.log(Number(str))

// console.log(typeof(undefined))
// console.log(typeof(null))
// console.log(undefined==null) // 不会进行类型的判断
// console.log(undefined===null) //会进行类型的判断
// console.log(0==false)

// console.log(NaN==NaN)
// // 错误语法,不会执行满足条件的代码块
// console.log(Number('hello') + 5)
// if(Number('hello')==NaN) {

// }

// // 正确语法，会执行满足条件的代码块
// if(isNaN(Number('hello'))) {

// }

// // 把内容转换为整数
// console.log(parseInt('11.61'))
// // 转换成浮点数
// console.log(parseFloat('11.90'))

// var value = "hello";
// if (isNaN(value)) {
//   console.log(value + " is not a number");
// } else {
//   console.log(value + " is a number");
// }

// 执⾏数学运算并处理 NaN 结果
// var a = 5;
// var b = 'invalid';
// try {
//  var result = a + b; // 抛出异常，因为 b 不是⼀个数字类型
// } catch (error) { // 代码执行异常
//  console.log('Error: ' + error); // 输出错误信息
// } finally {  // 无论是否异常都会进入
//  if (isNaN(result)) {
//  console.log('Result is NaN'); // 处理 NaN 结果
//  } else {
//  console.log('Result is ' + result); // 处理正常结果
//  }
// }

// let和var区别：
// 1、let不能重复声明，var可以
// 2、let是块作用域，var函数或者全局

// var name = "Kimi"; // 声明⼀个全局变量
// function greet() {
//  var greeting = "Hello"; // 声明⼀个局部变量
//  console.log(greeting + ", " + name); // 输出: Hello, Kimi
// }
// greet(); // 调⽤函数

// let firstName = "Kimi"; // 声明⼀个块级作⽤域的变量
// const lastName = "AI"; // 声明⼀个常量
// {
//  let age = 1; // 这个变量只在这个块内有效
//  console.log(firstName + " " + lastName + " is " + age + " year old."); // 输出: Kimi AI is 1 year old.
// }
// console.log(age); // 尝试访问 age 将导致错误，因为它不在当前作⽤域

// var 和 let在循环时的差异
// for(var i = 0; i<3; i++) {
//   setTimeout(()=>{
//     console.log(i)
//   },1000)
// }

// let uname = prompt('请输⼊姓名')
//  // 3. 打印输出
//  document.write(uname)

// 实现交换
//  let num1 = '孙尚⾹'
//  let num2 = '刘备'
//  let temp
//  // 都是把右边给左边
//  temp = num1
//  num1 = num2
//  num2 = temp
//  console.log(num1, num2)

// 声明尽量语义化
// let num = 1
// let str = ''
// let arr = [];
// let isOff = true
// let stuInfo = {

// }
// function sum() {

// }

// //  let arr = [10, 20, 30]
// // 1. 声明数组 有序
// let arr = ['刘德华', '张学友', '黎明', '郭富城', '周星驰', 10]
// // 2. 使⽤数组 数组名[索引号] 从0
// console.log(arr)
// console.log(arr[0]) // 刘德华
// console.log(arr[4])
// // 3. 数组⻓度 = 索引号 + 1
// console.log(arr.length) // 6

// console.log(1 + 1);
// console.log(3 / 5);
// // 余数
// console.log(5 % 3);
// console.log('合适字符串' - 2);

// // 1. ⻚⾯弹出输⼊框
// let r = prompt('请输⼊圆的半径：')
// // 2. 计算圆的⾯积（内部处理）
// // let re = 3.14 * r * r
// let re = Math.pow(r,2)*Math.PI
// // 3. ⻚⾯输出
// document.write(re)

// let isRunning = true;
// while (isRunning) {
//  console.log('循环继续运⾏');
//  isRunning = false; // 改变布尔值以停⽌循环
// }

// 逻辑与：真假中有一个为假就是假，全部为真才是真
// 逻辑或：真假中有一个为真就是真，全部为假才是假
// let hasMoney = false;
// let wantsToBuy = false;
// let c = true;
// let canBuy = hasMoney || wantsToBuy && c; // 使⽤逻辑与（AND）运算符
// console.log(canBuy); // 输出: false，因为 wantsToBuy 是 false

// let score = 0;
// if (score > 85) {
//  console.log('优秀');
// } else if (score > 75) {
//  console.log('良好');
// } else {
//  console.log('需要努⼒');
// }

// let grades = [70, 85, 92, 65, 88];
// // 只支持但条件返回
// let hs = grades.some(grade => grade > 85);
// // let hs = grades.some((grade) => { console.log(111); return grade > 85; }); // 使⽤ some ⽅法检测是否有成绩⼤于 85
// console.log(hs); // 输出: true

// let user = {
//  isSubscribed: false,
//  getSubscriptionStatus: function() {
//  return this.isSubscribed ? '已订阅' : '未订阅';
//  }
// };
// console.log(user.getSubscriptionStatus()); // 输出: 未订阅

// 强制转化为数字类型
// console.log(+'123'); // 输出: 123

// 1. ⽤户输⼊ prompt 得到是字符串类型 要转换为 数字型
// let num1 = +prompt('请输⼊第⼀个数字：')
// let num2 = +prompt('请输⼊第⼆个数字：')
// // 2. 输出
// alert(`两个数相加的和是:${num1 + num2}`)

// 第二天

// console.log('pink⽼师' - 2)
// console.log('pink⽼师' * 2)
// console.log('pink⽼师' + 2)

// let num = 1;
// // num += 1 等同于 num = num + 1
// num += 1;
// // num = num + 1;
// // num -= 1 等同于 num = num - 1
// num -= 1;
// // num = num - 1
// // num *= 1 等同于 num = num * 1
// num *= 2;
// // num = num*2;
// // num /= 1 等同于 num = num / 1
// num /= 2;
// // num = num/2;
// // num %= 1 等同于 num = num % 1
// num %= 2;
// // num  = num % 2;

// ++num;
// num--;
// console.log(num)

// console.log(3 > 5)
// console.log(3 >= '3')
// console.log(2 === '2')
// console.log(2 != '2')

// console.log('a' < 'b') // true
// console.log('aa' < 'ab') // true
// console.log('aa' < 'aac') // true

// ! > && > ||
//  console.log(!false  || true && false)
// let a = 10
// console.log( !a || 3>4 && 8<9)

// console.log(0 && 9); // 9
// var x = 0
// var y = 1
// console.log(++x && ++y);

// {}只有一句代码可以不需要{}包裹
// if('')  console.log('dddd')

// 有内容的文本、1、true都是真
// undefined、null、''、0、false、NaN 都是假
// let a = parseInt('abc123')
// if (NaN) {
//   // if括号内容为真才执行以下语句
//  console.log('执⾏语句')
// } else if(true){

// } else{
//   console.log('000')
// }

// let uname = prompt('请输⼊⽤户名:')
//  let pwd = prompt('请输⼊密码:')
//  // 2. 判断输出
//  if (uname === 'pink' && pwd === '123456') {
//  alert('恭喜登录成功')
//  } else {
//  alert('⽤户名或者密码错误')
//  }

// // 1. ⽤户输⼊
//  let score = +prompt('请输⼊成绩：')
//  // 2. 判断输出
//  if (score >= 90) {
//  alert('成绩优秀，宝⻉，你是我的骄傲')
//  } else if (score >= 70) {
//  alert('成绩良好，宝⻉，你要加油哦~~')
//  } else if (score >= 60) {
//  alert('成绩及格，宝⻉，你很危险~')
//  } else {
//  alert('成绩不及格，宝⻉，我不想和你说话，我只想⽤鞭⼦和你说话~')
//  }

// console.log(false ? 'a' : (true ? 'c' : 'b'))  // 'c'

// 1. ⽤户输⼊
// let num = +prompt('请您输⼊⼀个数字:')
// // 2. 判断输出- ⼩于10才补0
// // num = num < 10 ? 0 + num : num
// num = num >= 10 ? num : 0 + num
// alert(num)

// 每个条件执行完之后一定要加break终止，为了避免所有条件都不符合用default
// 代码里面打断点
// debugger
// let age = 10;
// switch (age) {
//   case 1:
//     console.log("您选择的是1");
//     break; // 退出switch
//   case 2:
//     console.log("您选择的是2");
//     break; // 退出switch
//   case 3:
//     console.log("您选择的是3");
//     break; // 退出switch
//   default:
//     console.log("没有符合条件的");
// }

// for(let i= 0; i<10; i++) {
//   document.write('我学的很棒<br>')
// }

// let i = 1
// while (i <= 3) {
//  document.write('⽉薪过万不是梦，毕业时候⻅英雄~<br>')
//  i++ // 这⾥千万不要忘了变量⾃增否则造成死循环
// }

//  // 1. 变量的起始值
// let end = +prompt('请输⼊次数:')
// let i = 1;
// // 2. 终⽌条件
// while (i <= end) {
//   if(i===3) {
//     // break; // 跳出整个循环
//     i++;
//     continue; // 跳出当前循环
//   }
//   // document.write(`我要循环${i}次 <br>`)
//   console.log(i)

//   // 3. 变量的变化量
//   i++
// }

// let undefined = '123';
// console.log(undefined)

// console.log(Number.MAX_VALUE);//数字类型的最⼤值 1.7976931348623157e+308
// console.log(Number.MIN_VALUE);//5e-324
// // 数字类型的特殊值
// console.log(Infinity)//⽆穷⼤ Infinity
// console.log(-Infinity)//⽆穷⼩ -Infinity

// 在计算机语言中，false==0
// var flg = false
// console.log(isNaN(flg))//flase

// 输出效果一样
// `这是一本书，共${pages}页`
// '这是一本书，共' + pages + '页'

// 延时
// setTimeout(()=>{
//   console.log('111')
// }, 1000)

// 心跳
// setInterval(()=>{
//   console.log('ddd')
// }, 1000)

// var obj = {
//   obj1: {
//     name:1
//   },
//  name:'喜⽺⽺',
//  age:18,
//  sex:'男'
// }

// let arr1 = [
//   {
//     name:'喜⽺⽺',
//     age:18,
//     sex:'男'
//   },
//   {
//     name:'喜⽺⽺',
//     age:18,
//     sex:'男'
//   }
// ]

// var arr = [1,3,5]
// console.log(typeof arr)
// console.log(typeof obj)
// console.log(obj.obj1.name)
// console.log(obj['obj1']['name'])
// console.log(arr1[0].age)
// console.log(arr1[0]['age'])
// var imgs = new Image()
// console.log( typeof imgs)

// let obj = {
//   name: 'xiaoming',
//   age: 19,
//   isMan: true,
//   loves: ['swimming', 'ball'],
//   swimmingInfo: {
//     speed: 1.8,
//     time: 30,
//   }
// }

// let arr = [
//   {
//     name: 'xiaoming',
//     age: 18,
//     isMan: true,
//   },
//   {
//     name: 'xiaoming1',
//     age: 19,
//     isMan: false,
//   }
// ]
// console.log(obj.age)
// console.log(obj.loves[1])
// console.log(obj["loves"][1])

// console.log(arr[1].age)
// console.log(arr[1]['age'])

// 遍历对象
// for(let i in obj) {
//   console.log(i)   // key
//   console.log(obj[i])   // value
// }

// var str4 = 'hello word'
// var num1 = 123
// var num2 = -123456
// var num3 = 0
// console.log(Boolean(str4),Boolean(num1),Boolean(num2),Boolean(num3))

// var str8 = 123456789;
// var str9 = str8.toString();
// console.log(typeof(str9))
// console.log(typeof(String(str8)))

// var bool = true
// console.log(String(bool))//true ⿊⾊字体
// console.log(bool.toString())

// let param = '123abc';
// console.log(Number(param))    // NaN
// console.log(parseInt(param))   // 123
// console.log(parseInt('BAC123'))  // NaN

// const aa = 2 // const 不能重新赋值
// aa = 9;
// let h = 0; // let 不能重复定义
// let h = 1;

// // 交换两个值
// let a = 1;
// let b = 2;
// let tmp;
// tmp  = a;
// a = b;
// b = tmp;
// console.log(a, b)

// console.log(document.getElementById("name"))  // 通过id获取元素，返回的是第一个具有该id的元素
// console.log(document.getElementsByClassName("name"))  // 通过类名获取元素，返回的是所有具有该类名的数组
// console.log(document.getElementsByName("abc"))  // 获取元素属性名为abc的元素集合
// console.log(document.getElementsByTagName('div')) // 获取元素名为tagName的元素集合
// console.log(document.querySelector('.name')) // 返回匹配css选择器的第⼀个元素, 是一个元素
// console.log(document.querySelectorAll('.name')) // 返回匹配css选择器的所有元素

// const spans = document.querySelectorAll('span');
// for(let i = 0; i<spans.length; i++) {
//   spans[i].addEventListener("click", function() {
//     document.querySelector(".active").className = "";
//     this.className = 'active'
//   })
// }

// var _box = document.querySelector('#box,#box1');
// console.log(_box);

// var mydiv = document.getElementById('mydiv');
// mydiv.addEventListener("click", function(){
//   console.log('ddd')
// })
// var _className = document.querySelectorAll('.list');
// console.log(_className);
// for(let i = 0; i<_className.length; i++) {
//   _className[i].style.color = 'red'

// }

// //第一步：获取元素
// var btn = document.getElementsByClassName('btn')[0];
// var box = document.getElementsByClassName('box')[0];
// //第二步：检测
// console.log(btn);
// console.log(box);
// //第三步：绑定事件
// // btn.addEventListener("click", function(){

// // })
// btn.ondblclick = function (event){//btn.ondblclick = function (){
//   console.log(event)
// //第四步：测试事件是否有效
// //alert("我是点击后的函数");
// //第五步：改变样式
// box.style.width = "300px";
// box.style.height = "300px";
// box.style.backgroundColor = "yellow";
// box.style.border = "2px solid #ff4100";
// };

// function clickfun() {
//   console.log('11')
// }

// var box = document.getElementsByClassName('box')[0];
// //onmouseover : 鼠标移入事件
// //onmouseout : 鼠标移出事件
// //语法：div.onmouseover = function (){}
// //语法：div.onmouseout = function (){}
// //鼠标移入
// box.onmouseover = function (){
//   console.log(1111)
// box.style.backgroundColor = "pink";
// }

// //鼠标移出
// box.onmouseout = function (){
// box.style.backgroundColor = "yellow";
// }

// box.onmouseenter = function (){
//   console.log(222)
// box.style.backgroundColor = "pink";
// }
// var _btn3 = document.getElementById('btn3')
// _btn3.onmouseenter = function (){
// 	console.log('有效');
// 	_btn3.style.color = 'pink';
// }
// _btn3.onmouseleave = function (){
// 	console.log('无效');
// 	_btn3.style.color = '#fff';
// }

// document.onkeydown = function (event) {
//   const key = event.key;
//   const keyCode = event.keyCode;
//   alert(`${key} ${keyCode}`);
//   if (key == "Enter") {
//     // alert("alt键被按下了");
//   }
//   // else if(shiftKey){
//   //    alert("shift键被按下了");
//   // }else if(ctrlKey){
//   //    alert("ctrl键被按下了");
//   // }
// };

// let arr = [1,2,3,5,7]
// console.log(arr.length)
// let sum = 0;
// for(let i = 0; i<arr.length;i++) {
//   sum +=arr[i]
// }
// console.log(sum)
// console.log(sum/arr.length)

// let obj = {
//   name: '张晓明',
//   age: 18,
//   likeSmile: false
// }
// console.log(`我叫${obj.name}，我今年${obj.age}岁，我${obj.likeSmile ? '爱' : '不爱'}笑`)
// let sex = prompt("请输入性别")
// switch(sex) {
//   case "man":
//     console.log('男人');
//     break;
//   case "woman":
//     console.log("女人");
//     break;
//   default:
//     console.log('外星人');
//     break;
// }
// if (sex == "man") {
//   console.log("男人");
// } else if (sex === "woman") {
//   console.log("女人");
// } else {
//   console.log("外星人");
// }

